<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'index.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
	<!-- 覆盖错误消息 
		1). 在对应的 Action 类所在的包中新建  ActionClassName.properties 文件, ActionClassName 即为包含着输入字段的 Action 类的类名
		2). 在属性文件中添加如下键值对: invalid.fieldvalue.fieldName=xxx 
	-->
  	<s:debug></s:debug>
    <s:form action="typeConvertTest" theme="simple">
    	<!-- 如果在页面输入了数字, 则正常为 Action 类的 int 类型的 age 属性赋值 -->
    	<!-- 当没有实现 ValidationAware 接口, 如果在页面输入了非数字, 则不会为 Action 类的 age 属性赋值 -->
    	<!-- 当继承了 ActionSupport 之后, 数据类型从 String 转换到目标类型出错后, 会到 name 为 input 的 result -->
    	<!-- 当 theme 为 xhtml 时, 会自动在表单上方看到错误信息 -->
    	<!-- 当 theme 为 simple 时, 可以手动将错误信息显示在网页上 -->
    	<s:textfield name="age"></s:textfield>
    	<!-- 通过 debug, 值栈的 Action(实现了ValidationAware) 对象中有一个 fieldErrors 属性-->
    	<!-- 该属类型为 Map<String, List<String>> 键为字段属性名, 值为错误消息组成的 List	 -->
    	${fieldErrors.age[0] }
    	<!-- 也可以通过 s:fielderror 标签来显示错误消息, 但会自动排版 -->
    	<s:fielderror fieldName="age"></s:fielderror>
    	
    	<s:textfield name="birth"></s:textfield>
		${fieldErrors.birth[0] }
    	<s:submit></s:submit>
    </s:form>
  </body>
</html>
